integer channel = -183321;
integer listener;
key who;

default
{
    state_entry()
    {
        llParticleSystem([]);
    }

    touch_start(integer total_number)
    {
        if(llDetectedName(0)!="Lil Maximus")
        {
            llSensor("Beach Ball (drag to ground)",NULL_KEY,ACTIVE | PASSIVE,
                20,PI);
            llRezAtRoot("panda",llGetPos()+<0,0,1.2>,<1,0,2> * llGetRot(),
                llGetRot(),90);
            llSleep(2.0);
        }
//        who = llDetectedKey(0);
        //if(llDetectedKey(0)==llGetOwner())
//            state menu;
    }
    no_sensor()
    {
        llRezAtRoot("Beach Ball (drag to ground)",llGetPos() + 
            <2,0,-0.5> * llGetRot(),ZERO_VECTOR,ZERO_ROTATION,0);
    }
}

state menu
{
    state_entry()
    {
        listener = llListen(channel,"","","");
        llDialog(who,"\nWhat do you want now?",
            ["Fountain","panda"],channel);
        llSetTimerEvent(10.0);
    }
    state_exit()
    {
        llSetTimerEvent(0.0);
        llListenRemove(listener);
        llSetLinkPrimitiveParams(3,[PRIM_ROTATION,llGetRootRotation()]);
        llSetLinkPrimitiveParams(4,[PRIM_ROTATION,llGetRootRotation()]);
    }
    timer()
    {
        state default;
    }
    object_rez(key id)
    {
        state default;
    }
    listen(integer c,string n,key k,string m)
    {
        if(k==who || llGetOwnerKey(k)==llGetOwner())
        {
            llSetTimerEvent(3.0);
            llSetLinkPrimitiveParams(4,[PRIM_ROTATION,llGetRootRotation()]);
            llSetLinkPrimitiveParams(3,[PRIM_ROTATION,
                llEuler2Rot(<90,0,0> * DEG_TO_RAD) * llGetRootRotation()]);
            if(m=="panda")
                llRezAtRoot("panda",llGetPos()+<0,0,1.2>,<0,0,2>,
                    llGetRot(),25);
            else
            if(m=="Fountain")
                llParticleSystem([  PSYS_PART_MAX_AGE, 2.2,
                                    PSYS_PART_FLAGS, PSYS_PART_INTERP_COLOR_MASK |
                                                     PSYS_PART_INTERP_SCALE_MASK |
                                                     PSYS_PART_FOLLOW_VELOCITY_MASK |
                                                     // PSYS_PART_FOLLOW_SRC_MASK |
                                                     // PSYS_PART_TARGET_POS_MASK |
                                                     // PSYS_PART_BOUNCE_MASK |
                                                     PSYS_PART_EMISSIVE_MASK |
                                                     // PSYS_PART_WIND_MASK |
                                                     0,
                                    PSYS_PART_START_COLOR, <0.5,0.5,1.0>,
                                    PSYS_PART_END_COLOR, <1.0,1.0,1.0>,
                                    PSYS_PART_START_SCALE, <0.3,0.3,0.0>,
                                    PSYS_PART_END_SCALE, <0.3,1.0, 0.0>, 
                                    PSYS_SRC_PATTERN,
                                        PSYS_SRC_PATTERN_ANGLE_CONE
                                        // PSYS_SRC_PATTERN_DROP
                                        // PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
                                        // PSYS_SRC_PATTERN_ANGLE_CONE
                                        // PSYS_SRC_PATTERN_ANGLE
                                        // PSYS_SRC_PATTERN_ANGLE_CONE
                                     ,
                                    PSYS_SRC_BURST_RATE, 0.1,
                                    PSYS_SRC_ACCEL, <0,0,-0.1>,
                                    PSYS_SRC_BURST_PART_COUNT,50,
                                    PSYS_SRC_BURST_RADIUS, 0.3,
                                    PSYS_SRC_BURST_SPEED_MIN, 1.3,
                                    PSYS_SRC_BURST_SPEED_MAX, 2.8,
                                    PSYS_SRC_INNERANGLE,0.0, 
                                    PSYS_SRC_OUTERANGLE,0.1,
                                    PSYS_SRC_OMEGA, <0,0,0>,
                                    PSYS_SRC_MAX_AGE, 2.0,
                                    PSYS_SRC_TEXTURE, "",
                                    PSYS_PART_START_ALPHA, 1.0,
                                    PSYS_PART_END_ALPHA,0.0
                                        ]);
                
        }
    }
}
